import smtplib    
from email.mime.multipart import MIMEMultipart    
from email.mime.text import MIMEText    
from email.mime.image import MIMEImage 
from email.header import Header   


##设置smtplib所需的参数
#下面的发件人，收件人是用于邮件传输的
smtpserver = 'smtp.qq.com'    #指定发送邮箱的格式smtp.163.com   smtp.qq.com  使用的邮箱的smtp服务器地址，这里是qq的smtp地址,其他同理
username = '******@qq.com'#发件人用户名
password='******'#发件人授权码,注意对于网页版邮箱，需要的不是密码，而是授权码，授权码要合着写在一起，中间不能有空格
sender='******@qq.com'#发件人，即发件人用户名
receiver='***@163.com'#接收人
#receiver=['******@126.com','******@126.com'] 收件人为多个收件人，用列表表示

#构造邮件主题
subject = 'Python email test，邮件主题'#邮件主题为中英文均可

##构造邮件对象MIMEMultipart对象，用于写邮件的即显示出来的邮件
#下面的主题，发件人，收件人，日期是显示在邮件页面上的
msg = MIMEMultipart('mixed') 
msg['Subject'] = subject  #这里的subject即为上面构造的邮件主题
msg['From'] = '******@qq.com <******@qq.com>' #邮件发件人
msg['To'] = '******@163.com' #邮件收件人
#msg['To'] = ";".join(receiver) #收件人为多个收件人,通过join将列表转换为以;为间隔的字符串
#msg['Date']='2012-3-16'

#构造正文内容
text = "这是你要的需求，具体见附件，Have  a good time"    
text_plain = MIMEText(text,'plain', 'utf-8') #邮件发送程序为了防止有些邮件阅读软件不能显示处理HTML格式的数据，通常都会用两类型分别为"text/plain"和"text/html"。构造MIMEText对象时，第一个参数是邮件正文，第二个参数是MIME的subtype，最后一定要用utf-8编码保证多语言兼容性。


#构造附件
sendfile=open(r'C:\\Users\\431&1301197.xlsx','rb').read() #打开附件内容（路径名\\文件名.文件类型 ）   
text_att = MIMEText(sendfile, 'base64', 'utf-8') 
text_att["Content-Type"] = 'application/octet-stream' 
#text_att.add_header('Content-Disposition', 'attachment', filename='aa需求.txt')#设置附件名字，中英文均可
msg.attach(text_att)   

#发送邮件
try:
smtp = smtplib.SMTP()    #实例
smtp.connect('smtp.qq.com')
#我们用set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息。
#smtp.set_debuglevel(1)  
smtp.login(username, password)    
smtp.sendmail(sender, receiver, msg.as_string())    
print ("邮件发送成功")
except smtplib.SMTPException:
print ("Error: 无法发送邮件")
